import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:playtruly/common/utils/toast_util.dart';
import 'package:playtruly/pages/play/activte/controller.dart';
import 'package:playtruly/pages/play/my_publish/controller.dart';
import 'package:playtruly/pages/play/review/controller.dart';

import 'index.dart';

class PlayIndexController extends GetxController
    with GetSingleTickerProviderStateMixin {
  PlayIndexController();

  final state = PlayIndexState();

  // Tab控制器
  late TabController tabController;

  // 初始化子页面的控制器
  void _initChildControllers() {
    // 如果控制器不存在，则创建它们
    if (!Get.isRegistered<ReviewController>()) {
      Get.put(ReviewController());
    }

    if (!Get.isRegistered<ActivteController>()) {
      Get.put(ActivteController());
    }

    if (!Get.isRegistered<MyPublishController>()) {
      Get.put(MyPublishController());
    }
  }

  // 根据当前标签页更新状态栏样式
  void _updateStatusBarForTab(int index) {
    if (index == 2) {
      // "我发布的" 页面 (深色背景)
      SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
        statusBarColor: Colors.transparent,
        statusBarIconBrightness: Brightness.light, // 浅色图标 (白色)
      ));
    } else {
      // 其他页面 (浅色背景)
      SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
        statusBarColor: Colors.transparent,
        statusBarIconBrightness: Brightness.dark, // 深色图标 (黑色)
      ));
    }
  }

  // 处理标签切换
  void handleTabChange(int index) {
    state.currentTabIndex = index;
    update();
  }

  // tap
  void handleTap(int index) {
    ToastUtil.show('消息');
  }

  /// 在 widget 内存中分配后立即调用。
  @override
  void onInit() {
    super.onInit();

    // 初始化标签控制器，设置初始索引为1（活动页面）
    tabController = TabController(
      length: 3,
      initialIndex: 1, // 默认显示中间标签（活动页面）
      vsync: this,
    );

    // 更新状态中的当前标签索引
    state.currentTabIndex = 1;

    // 设置初始状态栏样式
    _updateStatusBarForTab(tabController.index);

    // 添加标签切换监听
    tabController.addListener(() {
      if (!tabController.indexIsChanging) {
        handleTabChange(tabController.index);
        _updateStatusBarForTab(tabController.index);
      }
    });

    // 初始化子页面控制器
    _initChildControllers();
  }

  /// 在 onInit() 之后调用 1 帧。这是进入的理想场所
  @override
  void onReady() {
    super.onReady();
  }

  /// 在 [onDelete] 方法之前调用。
  @override
  void onClose() {
    // 恢复默认状态栏样式，避免影响其他页面
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
      statusBarColor: Colors.transparent,
      statusBarIconBrightness: Brightness.dark,
    ));
    // 释放TabController
    tabController.dispose();
    super.onClose();
  }

  /// dispose 释放内存
  @override
  void dispose() {
    super.dispose();
  }
}
